package jm.nj.demo11main.demo02;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/*
* 使用byte数组缓冲读取数据
* int read(byte[])读取一定量的字节数，并存储到字节数组中，返回读取到的字节数。
*
* 明确两件事:
 * 	1.数组的作用:起到缓冲作用,提高读取字节的效率,数组的长度一般指定为1024,或者1024的整数倍
 * 	2.返回值int表示什么:读取的字节有效个数
 *
 *
 * int表示有效个数
 *
* */
public class Demo02OutInputStream {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("b.txt");
        //使用字节输入流读取数据
        //int read(byte[])读取一定量的字节数，并存储到字节数组中，返回读取到的字节数。
        /*
        * String 类构造方法
        * String(byte[] byte)传递字节数组,数组-->字符串
        * */
/*
        byte[] bytes = new byte[2];
        int len = fis.read(bytes);
        System.out.println(len);
        System.out.println(new String(bytes));

         bytes = new byte[2];
         len = fis.read(bytes);
        System.out.println(len);
        System.out.println(new String(bytes));
        bytes = new byte[2];
         len = fis.read(bytes);
        System.out.println(len);
        System.out.println(new String(bytes));
        bytes = new byte[2];
         len = fis.read(bytes);
        System.out.println(len);
        System.out.println(new String(bytes));
        bytes = new byte[2];
         len = fis.read(bytes);
        System.out.println(len);
        System.out.println(new String(bytes));*/

        //循环
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len=fis.read(bytes))!=-1){
            System.out.print(new String(bytes,0,len));
        }
        /*
         * 发现读取到的数据如果不到1024,会产生很多空格
         * 可以使用String类的另一个构造方法优化
         * String(byte[] bytes, int offset, int length)
         * 把字节数据的一部分转换为字符串 offset:数组的开始索引  length:转换几个(len,读取的有效个数)
         */


    }
}
